package main

import (
	"fmt"
	"os"
)

/*
2. 学生信息管理系统  id 、name、age、address  （id不能重复）

1、添加学生信息
2、修改学生信息
3、删除学生信息
4、查看当前所有学生信息
5、退出

### 提取ip相关信息

# - 接口：https://ip.taobao.com/outGetIpInfo?accessKey=alibaba-inc&ip=要查询的ip地址
# - 给一个ip地址，可以通过该接口获取到省份和运营商
# - 实现一个ip查询功能
#   - 用户输入一个ip地址，将查询到的结果显示给用户
#   - 并将结果用以下格式写入到文件：ip,国家,省份,运营商
*/

type STUDENT struct {
	id int
	name string
	age int
	address string
}
type StudentSys struct {
	StuList []STUDENT
}
func (sys *StudentSys) addStudent(s STUDENT){
	var id,age int
	var name,address string
	fmt.Print("请输入你要添加的学生的ID：")
	fmt.Scan(&id)
	fmt.Print("请输入你要添加的学生的姓名：")
	fmt.Scan(&name)
	fmt.Print("请输入你要添加的学生的年龄：")
	fmt.Scan(&age)
	fmt.Print("请输入你要添加的学生的地址：")
	fmt.Scan(&address)
	s.id = id
	s.name = name
	s.age = age
	s.address = address
	sys.StuList = append(sys.StuList, s)
	fmt.Printf("添加成功！\n")
}
func (sys *StudentSys) changeStudent()  {
	var id,age int
	var name,address string
	var choice string
	sys.showStu()
	fmt.Println("请输入要修改学生的编号（ID）：")
	fmt.Scan(&id)
	for i:=0;i<len(sys.StuList);i++{
		if sys.StuList[i].id == id{
			fmt.Println("请选择要修改的学生的信息：1--id，2--age，3--name，4--address")
			fmt.Scan(&choice)
			if choice == "1"{
				fmt.Print("请输入新的ID：")
				fmt.Scan(&id)
				sys.StuList[i].id = id
			}else if choice == "2"{
				fmt.Print("请输入新的年龄：")
				fmt.Scan(&age)
				sys.StuList[i].age = age
			}else if choice == "3"{
				fmt.Print("请输入新的姓名：")
				fmt.Scan(&name)
				sys.StuList[i].name = name
			}else if choice == "4"{
				fmt.Print("请输入新的地址：")
				fmt.Scan(&address)
				sys.StuList[i].address = address
			}
			fmt.Printf("修改完成！\n")
		}else{
			fmt.Println("没有这个学生，请重新输入！")
		}
	}
}
func (sys *StudentSys) delStudent() {
	var id int
	sys.showStu()
	fmt.Println("请输入要修改学生的编号（ID）：")
	fmt.Scan(&id)
	for i:=0;i<len(sys.StuList);i++ {
		if sys.StuList[i].id == id {
			sys.StuList = append(sys.StuList[:i], sys.StuList[i+1:]...)
			fmt.Printf("该学生已删除！\n")
		}else{
			fmt.Print("没有此学生！")
		}
	}
}
func (sys *StudentSys) showStu()  {
	fmt.Println("学生信息表为：")
	fmt.Println(sys.StuList)
}
func (sys StudentSys) exitSys()  {
	os.Exit(0)
}
func main()  {
	s1 := STUDENT{}
	lst := StudentSys{}
	var choice string
	fmt.Printf("***********************欢迎进入学生管理系统*********************\n" +
		"1、添加学生信息\n" +
		"2、修改学生信息\n" +
		"3、删除学生信息\n" +
		"4、查看当前所有学生信息\n" +
		"5、退出\n")
	for {
		fmt.Print("请输入你的选择：")
		fmt.Scan(&choice)
		if choice == "1"{
			lst.addStudent(s1)
		}else if choice == "2"{
			lst.changeStudent()
		}else if choice == "3"{
			lst.delStudent()
		}else if choice == "4"{
			lst.showStu()
		}else if choice == "5"{
			lst.exitSys()
		}else{fmt.Print("输入错误，请重新输入！")}
	}
}